// 1. 按需导入 create 函数
import { create } from 'zustand'

// 2. 创建 store 的 hook
const useStore = create<BearType>()((set, get) => {
  // 这个 return 的对象中，存储了全局共享的数据或方法
  return {
    // 小熊的数量
    bears: 0,
    // 让 bears 自增+1
    incrementBears: () => set((prevState) => ({ bears: prevState.bears + 1 })),
    // 重置 bears 的数量
    resetBears: () => set({ bears: 0 }),
    // 让 bears 自减 step
    decrementBearsByStep: (step = 1) => set((prevState) => ({ bears: prevState.bears - step })),
    // 1 秒后 bears 自增+1
    asyncIncrementBears: () => {
      setTimeout(() => {
        get().incrementBears()
      }, 1000)
    },
    // 小鱼干的数量
    fishes: 0,
    // 让小鱼干数量自增+1的方法
    incrementFishes: () => set((prevState) => ({ fishes: prevState.fishes + 1 })),
    // 重置小鱼干的数量
    resetFishes: () => set({ fishes: 0 })
  }
})

// 3. 向外导出 store 的 hook
export default useStore
